home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _3401ADDEE2D84016AB5F0019F2923EFC < prev    next >
Encoding:
Text File  |  2004-01-06  |  1.4 KB  |  44 lines

  1. // ===============================================================
  2. // Vertex Program: 
  3. // Description: 
  4. // Last Update: 14/08/2003
  5. // Coder: Andrey Honich
  6. // ===============================================================
  7.  
  8.       #include "../CGVPMacro.csi"
  9.  
  10.  
  11.       VertAttributes { POSITION_3 TEXCOORD0_2 TANG_3X3 }
  12.       Param4f (Name = Bend Comp 'ObjWaveX' Comp 'ObjWaveY' Comp 'Bending' Comp = 1)
  13.       MainInput { VIEWPROJ_MATRIX, LIGHT_MATRIX, LIGHT_POS, ATTEN, BEND }
  14.       DeclarationsScript
  15.       {
  16.         IN_T0_C0_TANG
  17.         OUT_T0_T1_T2_T3_C0_C1
  18.       }
  19.       PositionScript = PosBending
  20.       CoreScript
  21.       {
  22.         OUT.Tex0.xy = IN.TexCoord0.xy;
  23.         OUT.Tex1.xy = IN.TexCoord0.xy;
  24.         OUT.Tex3 = mul(LightMatrix, vPos);
  25.  
  26.         // store normalized light vector
  27.         float3 lightVec = LightPos.xyz - vPos.xyz;
  28.         float fiSqDist = rsqrt(dot(lightVec, lightVec));
  29.         lightVec = lightVec * fiSqDist;
  30.  
  31.         float3 normal = IN.TNormal;
  32.         float fDot = dot(lightVec, normal);
  33.         normal = normal * sign(fDot);
  34.  
  35.         float3x3 objToTangentSpace;
  36.         objToTangentSpace[0] = IN.Tangent;
  37.         objToTangentSpace[1] = IN.Binormal;
  38.         objToTangentSpace[2] = normal;
  39.         
  40.         OUT.Color1.xyz = PROC_ATTENVERT;
  41.         OUT.Tex2.xyz = mul(objToTangentSpace, LightPos.xyz - vPos.xyz);          
  42.         OUT.Color = IN.Color;
  43.       }
  44.